/*-
 * <<
 * UAVStack
 * ==
 * Copyright (C) 2016 - 2017 UAVStack
 * ==
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * >>
 */

package com.creditease.monitor.datastore.jmx;

import com.creditease.monitor.captureframework.spi.CaptureConstants;
import com.creditease.monitor.captureframework.spi.CaptureContext;
import com.creditease.monitor.captureframework.spi.Monitor;
import com.creditease.monitor.captureframework.spi.Monitor.CapturePhase;

public class MonitorObserver implements MonitorObserverMBean {

    private Monitor monitor;
    private String data;

    public MonitorObserver(Monitor monitor) {
        this.monitor = monitor;
    }

    @Override
    public String getData() {

        // run state related capture
        CaptureContext context = monitor.getCaptureContext();
        monitor.doCapture(CaptureConstants.CAPPOINT_MONITOR_DATAOBSERVER, context, CapturePhase.DOCAP);

        // run preStore
        monitor.doPreStore();

        // gen JSON data
        data = monitor.getRepository().toJSONString();

        // in case of \\ to /
        data = data.replace("\\", "/");

        return data;
    }

}
